package ch13
{
	import flash.display.Sprite;
	import flash.events.Event;

	import utils.Segment;

	/**
	 * 自动化过程
	 * @author sjp
	 *
	 */
	public class Walking2 extends Sprite
	{
		private var segment0:Segment;
		private var segment1:Segment;
		private var cycle:Number = 0;

		public function Walking2()
		{
			init();
		}

		private function init():void
		{
			segment0 = new Segment(100, 20);
			addChild(segment0);
			segment0.x = 200;
			segment0.y = 200;
			segment1 = new Segment(100, 20);
			addChild(segment1);
			segment1.x = segment0.getPin().x;
			segment1.y = segment0.getPin().y;
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		/**
		 * 接下来把它变成腿。进行如下的调整： 
		 * 1.将 segment0 的旋转增加 90 度，将范围减小到从 90 度开始到每个方向 45 度。
		 * 2.每个关节都要有不同的角度，因此要声明两个角度 angle0 和 angle1。
		 * 3.将 angle1 的范围减少到 45 度，然后再增加 45 度。
		 * 这样就使最终的范围变为 0 到 90 度，因此只能向一个方向弯曲，像是真正的膝关节。
		 * 光这样说不能完全解释清楚，请大家试着观察加或不加 45 度有何区别，或试着加入其它的数值，直到感觉都合适为止。 
		 * @param event
		 * 
		 */
		private function onEnterFrame(event:Event):void
		{
			cycle += .05;
			var angle0:Number = Math.sin(cycle) * 45 + 90;
			var angle1:Number = Math.sin(cycle) * 45 + 45;
			segment0.rotation = angle0;
			segment1.rotation = segment0.rotation + angle1;
			segment1.x = segment0.getPin().x
			segment1.y = segment0.getPin().y;
		}
	}
}